#include <iostream>
#include <string>
 
using namespace std;
bool IsNumLetter(char ch)
{
    if(ch <= '9' && ch >= '0' || \
       ch <= 'z' && ch >= 'a') {
        return true;
    }
    return false;
}
bool StrWildcard(string& wd, string& str)
{
    int wdlen = wd.size();
    int slen = str.size(); 
    bool flag = false;   // 标记wd是否存在 *
    for(int i = 0, j = 0; i < wdlen && j < slen; ++i, ++j){
        if(!IsNumLetter(str[j]))  // 不是字母或数字
            return false;
        if(tolower(str[j]) == tolower(wd[i]))  // 都转为小写字母
            continue;
        if(wd[i] == '?')
            continue;
        else if(wd[i] == '*'){
            flag = true;
            while(wd[i] == '*'){
                ++i;
            }
            // 在str中找到与wd[i]相等的值，如果有连续相等的就走到最后一个相等的
            while(str[j+1] == wd[i] && str[j+1] != wd[i+1] || \
                  str[j] != wd[i] && j < slen){
                if(!IsNumLetter(str[j]))  // 不是字母或数字
                    return false;
                ++j;  
            }
        }    
        else
            return false;
    }
    // 没有*通配符且长度不相等 或 最后一个字符不是通配符且不相等
    if(wdlen != slen && !flag || \
       wd[wdlen-1] != '*' && wd[wdlen-1] != '?' && wd[wdlen-1] != str[slen-1]){
        return false;
    }
    return true;
}

int main()
{
    string wd, str;
    cin >> wd >> str;
    if(StrWildcard(wd, str))
        cout << "true";
    else
        cout << "false";
    return 0;
}